; unsigned int *generar_tabla_apariciones(unsigned char *buf, unsigned int size);

extern calloc

global generar_tabla_apariciones

%define ptr_buf [ebp + 8]
%define size [ebp + 12]

section .text

generar_tabla_apariciones:
	push ebp
	mov ebp,esp
	push esi
	push edi
	push ebx
	
	; Pido memoria para la tabla de apariciones.
	mov ebx, 4
	mov eax, 256
	push ebx
	push eax
	call calloc
	add esp, 8
	cmp eax, 0
	je fin
	
	mov edi, eax
	mov esi, ptr_buf
	
	mov ecx, size
	
ciclo:
	xor edx, edx
	mov dl, [esi]
	
	add dword [edi + edx * 4], 1
	inc esi
	loop ciclo
	
fin:
	pop ebx
	pop edi
	pop esi
	pop ebp
	ret
